import queue, threading
q = queue.Queue()
for i in range(5):
    q.put_nowait(i)  # 非阻塞,如果队列满了直接报错
    # 非阻塞添加,block默认是True
    q.put(i, block=False)
    # 还可以设置超时,时间过了没空间报错
    q.put(i, timeout=3)
q.get_nowait()  # 非阻塞获取,没有数据直接报错,等价于q.get(block=False)
q.get(timeout=3)  # 超时后报错
def get(queue):
    while True:
        print("消费队列数据%s"%queue.get())
        queue.task_done()  # 有join时,必须调用,否则会一直阻塞在join
        if queue.empty():  # 队列是否为空
            break
t1 = threading.Thread(target=get, args=(q,))
t1.start()
q.join()  # 程序阻塞,直到队列中每一个任务都声明task_done()
print("队列已经消费完毕-----------")

